Общие сведения
Надёжность и безопасность
Покупка лицензии
Начало работы
Роли в системе
Проекты
Концепции
Компоненты
Инструкции
Задачи
Финансы
Ресурсы
Таймшиты
Клиенты
Вики
Затраты
Отчёты и аналитика
FAQ
Типы отчётов
Тип отчёта «Акты»
Тип отчёта «Баланс отсутствий»
Тип отчёта «Бронирование»
Тип отчёта «Биллинг»
Тип отчёта «Версии проектов»
Тип отчёта «Задачи»
Тип отчёта «Затраты»
Тип отчёта «Заявки на затраты»
Тип отчёта «Заявки на отсутствия»
Тип отчёта «История ставок пользователей»
Тип отчёта «Запросы ресурсов»
Тип отчёта «Навыки пользователей»
Тип отчёта «Пользователи»
Тип отчёта «Проводки»
Тип отчёта «Ресурсный план»
Тип отчёта «Ресурсный план (по версиям)»
Тип отчёта «Проекты»
Тип отчёта «Сертификаты пользователей»
Тип отчёта «Счета»
Тип отчёта «Счета (строки)»
Тип отчёта «Таймшиты»
Тип отчёта «Таймшиты детально»
Тип отчёта «Финансы»
Тип отчёта «Структура работ»
Тип отчёта «Центры затрат проектов»
Тип отчёта «Задания воркфлоу»
Тип отчета Клиенты
Тип отчета «Контакты»
Тип отчёта «Сделки»
Тип отчёта «История состояний сделок»
Тип отчёта «Взаимодействия»
Использование отчётов
Группировка данных источника
Группировка данных в отчёте
Типы виджетов
Общие отчёты и шаблоны
Настройка отчёта
Экспорт отчётов
Пользовательские настройки отчёта
Вычисляемые поля
Особые колонки отчётов с временными рядами
Использование панелей мониторинга
Публикация панелей
Фильтры источников данных
Настройка и администрирование
Типовой порядок настройки системы
Язык формул и выражений
Шаблонизатор
On-premises
API
История изменений
Термины и определения

Шаблонизатор

Обновлено: 19.05.2026

Шаблонизатор — это механизм формирования текста по заранее заданному шаблону, в котором специальные метки и команды заменяются данными из системы.

В Timetta шаблонизатор на базе Scriban используется для подстановки данных в текст с помощью конструкций {{ ... }} и {% ... %}: например, {{ Name }} заменяется на название проекта, а {% for ... %} позволяет вывести список связанных записей. Он применяется в моделях контекста ИИ, шаблонах электронной почты и документах проекта.

Где используется шаблонизатор

В системе шаблонизатор подключен в трех компонентах:

  • моделях контекста ИИ;
  • шаблонах электронной почты / сценариях взаимодействия;
  • типах документов проекта.

Во всех случаях это подстановка данных в текст по шаблону с {{ ... }} и {% ... %}, но контекст и загрузка данных разные.

Тип контекста Данные в шаблоне Особенности / Корневая сущность
Схемы контекста ИИ Одна сущность типа представления, например Project, Deal:
{{ Name }}, {{ Manager.Name }}, циклы по коллекциям
Корень — одна бизнес-сущность: Project, Deal и т. п.
Шаблоны электронной почты Фиксированные объекты: Organization, Contact, Deal, Performer
Примеры: {{ Contact.FirstName }}, {{ Organization.Name }}
Нет единого корня — используются несколько независимых объектов
Документы проекта Сам документ (ProjectArtifact) как корень — аналогично схемам контекста ИИ Корень — ProjectArtifact; используются те же правила, что и для схем ИИ

Структура шаблона и синтаксис

Вид Как выглядит Зачем
Обычный текст Все без {{ и {% Попадает в результат как есть, включая Markdown
Метки и команды {{ ... }} и {% ... %} Подстановка значений, циклы, условия

Пример:

Проект: {{ Name }}
Код: {{ Code }}

В результате {{ Name }} заменится на название проекта, {{ Code }} — на код. Строка Проект: останется без изменений.

Подстановка одного значения — {{ ... }}

Внутри {{ }} указывается поле записи или цепочка через точку для связанной записи:

{{ Name }}
{{ Code }}
{{ Description }}
{{ Manager.Name }}
{{ StartDate }}
{{ EndDate }}

Правила:

  • имена полей указываются как в системе, обычно с большой буквы: Name, не name;
  • точка означает «взять поле у связанной записи»: Manager.Name = имя менеджера;
  • даты, числа и флаги подставляются как текст, в том виде, в котором система их хранит или форматирует при выводе.

Если поля нет или оно пустое, на этом месте часто будет пусто.

Убрать лишние пробелы и переносы — {{- и -}}

Иногда после метки или цикла остаются лишние пустые строки, особенно в таблицах Markdown. Символ - у скобок подрезает пробелы и переносы с этой стороны:

| Ресурс | Роль |
| :----- | :--- |
{{- for Member in ProjectTeamMembers }}
| {{ Member.Resource.Name }} | {{ Member.Role.Name }} |
{{- end }}

Без - между строками таблицы могут появиться лишние пустые ряды.

Повтор для списка — {% for ... %}

Если у записи есть несколько связанных строк, один блок шаблона повторяется для каждого элемента:

{% for Member in ProjectTeamMembers %}
- {{ Member.Resource.Name }} - {{ Member.Role.Name }}
{% end %}

Смысл конструкции:

  • ProjectTeamMembers — имя списка у текущей записи, как в модели;
  • Member — временное имя одного элемента внутри цикла, его можно назвать иначе, например Row;
  • внутри цикла обращайтесь к полям через это имя: Member.Resource.Name.

Тот же список в таблице:

| Сотрудник | Роль |
| :-------- | :--- |
{{- for Member in ProjectTeamMembers }}
| {{ Member.Resource.Name }} | {{ Member.Role.Name }} |
{{- end }}

Важно для Timetta: система по шаблону сама подгружает связанные данные, которые явно указаны в путях: Manager.Name, ProjectTeamMembers.Resource.Name и т. п. Поэтому в шаблоне лучше писать прямые обращения к полям, а не выдумывать обходные пути.

Условие — показать только если есть — {% if %}

{% if Description %}
## Описание
{{ Description }}
{% end %}

Блок между {% if %} и {% end %} попадет в текст только если Description заполнено.

Можно комбинировать условия с циклами и Markdown.

Markdown в шаблоне

Шаблонизатор не мешает разметке Markdown. Можно использовать:

  • заголовки #, ##;
  • списки - или 1.;
  • таблицы | ... |;
  • жирный текст **...**, если он нужен в контексте.

Итог — готовый текст для чата, удобный и человеку, и ИИ.

Полный пример шаблона

# Паспорт проекта

- Наименование: {{ Name }}
- Код: {{ Code }}
- Менеджер: {{ Manager.Name }}
- Сроки: {{ StartDate }} - {{ EndDate }}

## Описание
{{ Description }}

## Команда

| Ресурс | Роль |
| :----- | :--- |
{{- for Member in ProjectTeamMembers }}
| {{ Member.Resource.Name }} | {{ Member.Role.Name }} |
{{- end }}

Для нескольких выделенных записей в списке этот шаблон выполняется отдельно для каждой записи. Полученные блоки склеиваются с пустой строкой между ними.

Откуда брать имена для меток

Корень шаблона — одна выбранная сущность того типа, для которого настроена схема: проект, сделка, документ и т. д.

Полное описание сущностей и их свойств доступно в менеджере сущностей.

Доступно для применения:

  • Свойства примитивы: Name, Code, StartDate и т. п.;
  • Навигационные свойства: Manager.Name, (в том числе по «цепочке») — Organization.Code);
  • Свойства коллекции: ProjectTeamMembers (их надо итерировать в цикле) и т. п.

Имена должны совпадать со свойства в метамодели / карточке, как в API и настройках сущности. Если метка не совпадает, в результате будет пустое место или ошибка при генерации.

Что шаблонизатор в Timetta не делает

Нельзя / не предусмотрено Пояснение
Считать суммы и средние в шаблоне Технически Scriban поддерживает выражения и вычисления, но в Timetta шаблон предназначен прежде всего для подстановки данных. Расчеты лучше выполнять в системе и передавать в шаблон готовыми полями.
Обращаться к чужому типу записи Контекст — только выбранная сущность и ее связи
Использовать произвольные формулы Доступны только поля модели и конструкции Scriban

Расширенные возможности Scriban, например сложные функции и специальное форматирование дат, в справочнике Timetta почти не используются. Шаблон в Timetta ориентирован прежде всего на поля сущности и простые конструкции, как в примерах выше.

Если шаблон пустой или с ошибкой

Ситуация Результат
Поле Текст шаблона пустое Подставляется простая таблица по умолчанию: наименование, код, описание и другие доступные поля
Опечатка в {{ / {%, незакрытый end Текст не сформируется; при сохранении шаблона появится ошибка
Неверное имя поля В результате будет пустое место

При создании схемы для типа с полем имени система может подставить минимальный шаблон: {{ Name }}.

Дополнительные материалы

Содержание

Где используется шаблонизатор Структура шаблона и синтаксис Подстановка одного значения - {{ ... }} Убрать лишние пробелы и переносы - {{- и -}} Повтор для списка - {% for ... %} Условие - показать только если есть - {% if %} Markdown в шаблоне Полный пример шаблона Откуда брать имена для меток Что шаблонизатор в Timetta не делает Если шаблон пустой или с ошибкой Дополнительные материалы
Ничего не найдено

Перейти на русскую версию?